#pragma once

class Proxy {
public:
    virtual ~Proxy() {}
    virtual bool isConnected() = 0;
};

class ProxyImpl : public virtual Proxy {
    bool is_connected_{false};
public:
    virtual ~ProxyImpl() {}
    virtual bool isConnected() override { return is_connected_; }
};

class GuildServiceBasicProxy : public virtual Proxy {
public:
    virtual ~GuildServiceBasicProxy() {}
};

class GuildServiceBasicProxyImpl : public GuildServiceBasicProxy, public ProxyImpl {
public:
    virtual ~GuildServiceBasicProxyImpl() {}
    virtual bool isConnected() override { return true; }
};
